換算成數學說法來看,運算式(expression)就是算式,運算元(operand)就是要被加減乘除的東西,運算子(operator)就是本篇重點,也就是加減乘除以及其他的運算符號好朋友們!
運算子是用來指定資料做某種計算,按照運算時需要的運算元數目分成:
1. 一元運算子(Unary Operator):包含一個運算元,如:-5
2. 二元運算子(Binary Operator):包含兩個運算元,如:a+4
3. 三元運算子(Tenary Operator):包含三個運算元,如:Min=(a < b)? a:b,表示若 a < b是True,Min=a,反之Min = b。
而根據運算子的功能,可以分為以下幾種類型:
1. 算術運算子
2. 關係運算子(等號比較運算子、比較運算子)
3. 邏輯運算子、條件邏輯運算子
4. 位元運算子(二進位制)
5. 移位運算子(二進位制)
6. 指定運算子
7. 條件運算子
下面就讓我們來一一看一下內容有什麼吧!
分為一元運算子及二元運算子,先講最容易理解的二元運算子
運算子 | 意義 | 說明 | 例子 |
---|---|---|---|
+ | 加 | 左邊加右邊 | 3+2=5 |
- | 減 | 左邊減右邊 | 3-2=1 |
* | 乘 | 左邊乘以右邊 | 3 * 2=6 |
/ | 除 | 左邊除以右邊 | 3/2=1.5(用float或是double會顯示1.5,用int會顯示1),見下方程式碼說明 |
% | 取餘數 | 左邊除以右邊並取其餘數 | 3%2=1(3除以2餘1) |
加法說明:
加法也可以用在字串相加
,如下方
int a = 1, b = 2;
Console.WriteLine(a+b);//一般數字相加
string c = "1", d = "2";
Console.WriteLine(c + d);//字串直接連起來
輸出結果
2019/10/20補充:
C# 的加號( + )運算子預設就支援字串串加的功能,只要一群字串串接的物件中只要有一個以上的物件型別是「字串」的話,就會全部變成「字串相加」,只要遇到「非字串」的物件,預設會使用繼承至 object 物件的 ToString() 方法進行轉型,讓所有物件都變成「字串」後進行相加動作。如果物件回傳值為 null 的話,也會改以空字串替代。(資料來源:https://blog.miniasp.com/post/2009/02/01/CSharp-Addition-operator-for-string-concatenation)
除法說明:
int a = 3, b = 2, c;
c = a / b;
Console.WriteLine(c);// int 會輸出1,只顯示到整數
double x = 3.0, y = 2.0, z;
z = x / y;
Console.WriteLine(z);// double 會輸出1.5
那一元運算子的部分如下
運算子 | 意義 | 說明 |
---|---|---|
a++ | 自己後加一 | a先是自己,然後自己再+1。如:b=a++,先執行b=a,再執行a=a+1。 |
++a | 自己先加一 | a先加1後再做後續。如:b=++a,先執行a=a+1,再執行b=a。 |
a-- | 自己後減一 | a先是自己,然後自己再-1。如:b=a--,先執行b=a,再執行a=a-1。 |
--a | 自己先減一 | a先減1後再做後續。如:b=--a,先執行a=a-1,再執行b=a。 |
int d = 0;
Console.WriteLine(d);//先輸出d,此時d是0
Console.WriteLine(d++);//輸出d,此時d是0,然後把d+1,0+1=1
Console.WriteLine(d);//因為上面那行,d變成1了
Console.WriteLine("=======================================");
int e = 0;
Console.WriteLine(e);//先輸出e,此時e是0
Console.WriteLine(++e);//把e+1後輸出,0+1=1
Console.WriteLine(e);//e是1
Console.WriteLine("=======================================");
//如果加上算術運算子也是一樣喔
int f = 7;
Console.WriteLine(f);//先輸出7,此時f是7
Console.WriteLine(++f/2);//先執行7+1=8,然後8/2=4,輸出4
Console.WriteLine(f);//f是8,輸出8
Console.WriteLine("=======================================");
int g = 6;
Console.WriteLine(6);//先輸出6,此時g是6
Console.WriteLine(g++ / 2);//先執行6/2=3,輸出3,再執行6+1=7
Console.WriteLine(g);//g是6+1=7,輸出7
執行結果
為二元運算子,運算後傳回的結果為布林值:True或False
運算子 | 意義 | 數學式 |
---|---|---|
== | 相等 | A = B |
!= | 不相等 | A ≠ B |
> | 大於 | A > B |
< | 小於 | A < B |
>= | 大於或等於 | A≧B |
<= | 小於或等於 | A≦B |
用法就跟數學上的意義是相同的喔~ |
運算後傳回的結果為布林值:True或False
運算子 | 意義 | 說明 | 分類 |
---|---|---|---|
! | 否定 | "非"(not)的意思。若A本身為真,!A為假。若A本身為假,!A為真。 | 一元邏輯運算子 |
& | 且(And) | A & B,當A、B都為真時,結果才會為真 | 二元邏輯運算子,針對整數型別的運算元,會執行位元邏輯運算。(詳情見位元運算子) |
| | 或(Or) | A | B,當A、B其中一個為真時,結果為真 | 二元邏輯運算子,針對整數型別的運算元,會執行位元邏輯運算。(詳情見位元運算子) |
^ | XOr | 邏輯互斥 | 二元邏輯運算子,針對整數型別的運算元,會執行位元邏輯運算。(詳情見位元運算子) |
&& | 且 | A&& B,當A、B都為真時,結果才會為真 | 二元條件邏輯運算子 |
|| | 或 | A || B,當A、B其中一個為真時,結果為真 | 二元條件邏輯運算子 |
運用:
欸等等,這個表裡面好像有兩組東西很像耶,&還有&&,|還有||差在哪?
只有一個的|還有&,在進行判斷時,前後兩個運算元都會評估。
兩個的||和&&,在進行判斷時,只有在必要時才會評估右邊的運算元。
舉例來說:
假 & 真:已經知道第一個是假了,&還是會求出前後運算元的值才進行判斷
假 && 真:第一個已經是假了,結果必定為假,&&不用求出右邊運算元的值就會進行判斷
所以在進行判斷時||跟&&是比較有效率的,比較重要的比較值就放前面囉~
&以及|如果運用在整數上,會執行位元邏輯運算,請參考下一個位元運算子的說明
不對,& | ^ 是位元運算,不是邏輯運算
你之所以誤認 true & true 跟 true && true 一樣是邏輯運算
只是因為 1 AND 1 位元運算的結果剛好也是 1 。